package com.jt.controller;

import com.jt.pojo.ItemCat;
import com.jt.pojo.ItemCatParam;
import com.jt.service.ItemCatService;
import com.jt.vo.SysResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

//商品分类列表信息

@RestController
@CrossOrigin
@RequestMapping("/itemCat")
public class ItemCatController {

    @Autowired
    private ItemCatService itemCatService;


    /**
     * 需求: 查询3级商品分类列表信息
     * URL:  /itemCat/findItemCatList/{level}
     * 参数:  level 查询的层级
     * 返回值: SysResult对象(List<ItemCat>)
     */
    @GetMapping("/findItemCatList/{level}")
    public SysResult findItemCatList(@PathVariable Integer level) {

        List<ItemCat> itemCatList = itemCatService.findItemCatList(level);
        return SysResult.success(itemCatList);
    }


    /**
     * 请求路径: /itemCat/status/{id}/{status}
     * 请求类型: put
     * 请求参数:
     * 实现状态的修改
     */
    @PutMapping("//status/{id}/{status}")
    public SysResult updateStatus(ItemCat itemCat) {
        itemCatService.updateStatus(itemCat);
        return SysResult.success();
    }

    /**
     * 7.3 商品分类新增
     * 请求路径: /itemCat/saveItemCat
     * 请求类型: post
     * 请求参数: 表单数据
     */

    @PostMapping("/saveItemCat")
    public SysResult saveItemCat(@RequestBody ItemCat itemCat) {
        itemCatService.saveItemCat(itemCat);
        return SysResult.success();
    }

    /**
     * 6.5 商品分类删除
     * .5 商品分类删除
     * 请求路径: /itemCat/deleteItemCat
     * 请求类型: delete
     * 业务描述: 当删除节点为父级时,应该删除自身和所有的子节点
     * 请求参数:
     * 删除的标签是三级标签 可以直接删除
     * 删除二级标签 先删三级标签
     */
    @DeleteMapping("/deleteItemCat")
    public SysResult deleteItemCat(Integer id, Integer level) {
        itemCatService.deleteItemCat(id, level);
        return SysResult.success();
    }

    /**
     * 删除商品分类参数
     * URL: http://localhost:8091/itemCatParam/deleteItemCatParamById
     * 参数: form参数
     * 返回值: SysResult对象
     */
    @DeleteMapping("/deleteItemCatParamById")
    public SysResult deleteItemCatParamById(Integer paramId) {
        itemCatService.deleteItemCatParamById(paramId);
        return SysResult.success();
    }

    /**
     * 新增商品分类参数进行更新
     * <p>
     * *
     */
    @PutMapping("/updateItemCatParam")
    public SysResult updateItemCatParam(@RequestBody ItemCatParam itemCatParam) {
        itemCatService.updateItemCatParam(itemCatParam);
        return SysResult.success();


    }

}
